package com.tensquare.friend.controller;

import com.netflix.discovery.converters.Auto;
import com.tensquare.friend.client.UserClient;
import com.tensquare.friend.service.FriendService;
import entity.Result;
import entity.StatusCode;
import io.jsonwebtoken.Claims;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;

@RestController
@RequestMapping("/friend")
public class FriendController {

    @Autowired
    private HttpServletRequest request;

    @Autowired
    private FriendService friendService;

    @Autowired
    private UserClient userClient;



    /**
     * 添加好友或者非好友
     * @return
     */
    @PutMapping("/like/{friendid}/{type}")
    public Result addFriend(@PathVariable String friendid,@PathVariable String type){
        //验证是否登录
        Claims claims = (Claims) request.getAttribute("claims_user");
        if(claims==null){
            return new Result(false, StatusCode.LOGINERROR, "权限不足");
        }
        String userid = claims.getId();
        if(type!=null){
            if(type.equals("1")){
                //添加好友
                int flag=friendService.addFriend(userid,friendid);
                if(flag==0){
                    return new Result(false, StatusCode.ERROR, "不能重复添加好友");
                }
                userClient.updatefanscountandfollowcount(userid,friendid,1);
                return new Result(true, StatusCode.OK, "添加成功");
            }else if(type.equals("2")) {
                //添加非好友
                int flag= friendService.addNoFriend(userid,friendid);
                if(flag==0){
                    return new Result(false, StatusCode.ERROR, "不能重复添加非好友");
                }
                return new Result(true, StatusCode.OK, "添加成功");
            }
            return new Result(false, StatusCode.ERROR, "参数异常");
        }else{
            return new Result(false, StatusCode.ERROR, "参数异常");

        }
    }

    @DeleteMapping("/{friendid}")
    public Result deleteFriend(@PathVariable String friendid){
        //验证是否登录
        Claims claims = (Claims) request.getAttribute("claims_user");
        if(claims==null){
            return new Result(false, StatusCode.LOGINERROR, "权限不足");
        }
        String userid = claims.getId();
        friendService.deleteFriend(userid,friendid);
        userClient.updatefanscountandfollowcount(userid,friendid,-1);
        return new Result(true, StatusCode.OK, "删除成功");

    }
}
